<?php

class Model_News extends Cms_DatabaseObject {

  
    public function __construct($db) {
        parent::__construct($db, 'news', 'id');

        // далее перечислены все поля в таблице
        $this->add('name');
        $this->add('h1');
        $this->add('description');
        $this->add('keywords');
        $this->add('alias');
        $this->add('short');
        $this->add('full');
        $this->add('date');
        $this->add('image');
       
      
    }

      private static function _GetBaseQuery($db, $options = array()) {
        // инициализация настроек
        $defaults = array();

        foreach ($defaults as $k => $v) {
            $options[$k] = array_key_exists($k, $options) ? $options[$k] : $v;
        }

        // создание запроса на получение
        $select = $db->select();
        $select->from(array('n' => 'news'), array());

        return $select;
    }

    public static function GetNews($db, $options = array()) {
        // инициализируем настройки
        $defaults = array(
            'where' => '',
            'offset' => 0,
            'limit' => 0,
            'order' => 'n.id'
        );

        foreach ($defaults as $k => $v) {
            $options[$k] = array_key_exists($k, $options) ? $options[$k] : $v;
        }

        $select = self::_GetBaseQuery($db, $options);

        // поля для выборки
        $select->from(null, 'n.*');

        // зададим настройки
        if ($options['limit'] > 0)
            $select->limit($options['limit'], $options['offset']);
        
        if($options['where']!='')
            $select->where($options['where']);

        $select->order($options['order']);

        // получим данные из базы
        $data = $db->fetchAll($select);

        // сделаем из полученных записей объекты класса
        $news = self::BuildMultiple($db, __CLASS__, $data);
        $cat_ids = array_keys($news);

        if (count($cat_ids) == 0)
            return array();
        
        return $news;
    }
    

}
/*
class News extends Zend_Db_Table_Abstract
{
    protected $_name = 'news';
    
    public function getNews($id)
    {
        $id = (int)$id;
        $row = $this->fetchRow('id = ' . $id);
        if(!$row) {
            throw new Exception("Нет записи с id - $id");
        }
        return $row->toArray();
    }
     public function getNewsALias($alias)
    {
        $row = $this->fetchRow("alias = '".$alias."'");
        if(!$row) {
            throw new Exception("Нет записи с alias - $id");
        }
        return $row->toArray();
    }
    public function addNews($name,$h1,$description,$keywords,$alias,$short,$full,$date)
    {
        $data = array(
            'name' => $name,
            'h1' => $h1,
            'description' => $description,
            'keywords' => $keywords,
            'alias' => $alias,
            'short' => $short,
            'full' => $full,
            'date' => $date,
        );
        $this->insert($data);
    }
    
    public  function updateNews($id, $name, $h1, $description, $keywords, $alias, $short, $full, $date)
    {
        $data = array(
            'name' => $name,
            'h1' => $h1,
            'description' => $description,
            'keywords' => $keywords,
            'alias' => $alias,
            'short' => $short,
            'full' => $full,
            'date' => $date,
        );
        
        $this->update($data, 'id = ' . (int)$id);
    }
    
    public function deleteNews($id)
    {
        $this->delete('id = ' . (int)$id);
    }
}*/